home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
081-090
/
amok87
/
stopwatch
/
devicesupport37.mod
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
72 lines
(*---------------------------------------------------------------------------
:Program. DeviceSupport37.mod
:Contents. Easy Device access (OS 2.04+ Version)
:Author. Christian Stiens
:Address. Snail-Mail: E-Mail:
:Address. Heustiege 2 UUCP: Christian_Stiens@ouzonix.bo.open.de
:Address. W-4710 Lüdinghausen FIDO: 2:245/5802.25
:Copyright. public domain
:Language. Oberon
:Translator. Amiga Oberon 3.01
:History. V1.0, 18-Feb-93
---------------------------------------------------------------------------*)
MODULE DeviceSupport37;
IMPORT
e := Exec, SYSTEM;
TYPE
InitProc* = PROCEDURE(ioReq: e.MessagePtr);
VAR
ioErr* : INTEGER;
PROCEDURE OpenDev* (name : ARRAY OF CHAR;
unit : LONGINT;
flags : LONGSET;
ioSize : INTEGER;
ioInit : InitProc): e.MessagePtr; (* $CopyArrays- *)
VAR
port: e.MsgPortPtr;
ioReq: e.IORequestPtr;
BEGIN
port := e.CreateMsgPort();
IF port = NIL THEN RETURN NIL END;
IF ioSize = 0 THEN ioSize := SIZE(e.IOStdReq) END;
ioReq := e.CreateIORequest(port,ioSize);
IF ioReq = NIL THEN e.DeleteMsgPort(port); RETURN NIL END;
IF ioInit # NIL THEN ioInit(ioReq) END;
IF e.OpenDevice(name,unit,ioReq,flags) # 0 THEN
e.DeleteIORequest(ioReq);
e.DeleteMsgPort(port);
RETURN NIL
END;
RETURN ioReq;
END OpenDev;
PROCEDURE CloseDev* (VAR ioReq: e.APTR);
VAR port: e.MsgPortPtr;
BEGIN
IF ioReq#NIL THEN
port := SYSTEM.VAL(e.MessagePtr,ioReq).replyPort;
e.CloseDevice(ioReq);
e.DeleteIORequest(ioReq);
e.DeleteMsgPort(port);
ioReq := NIL;
END;
END CloseDev;
PROCEDURE DoCommand* (ioReq: e.MessagePtr; cmd: INTEGER);
BEGIN
ioReq(e.IORequest).command := cmd;
ioErr := e.DoIO(ioReq);
END DoCommand;
END DeviceSupport37.